package com.moli.iov.protocol;

import com.moli.iov.protocol.enums.DateTimeTag;
import com.moli.iov.protocol.util.ProtocolUtil;
import com.moli.iov.util.ByteArrayUtil;

public class MesssageBuilder {

    public static String build(){

        StringBuilder sb = new StringBuilder();

        DateTimeTag tag = new DateTimeTag();

        sb.append("232302" +
                        "01" + //应答标识
                        "4c4e425343423346304a57313831303136" + // 车架号
                        "01" + //加密方式
                        "0179" + //报文长度
//                "14080c0e361e" + //采集时间
                        ByteArrayUtil.toHexString(tag.toBytes())+ //采集时间
                "01" + //整车数据
                    "01" + //车辆状态
                    "03" + //充电状态
                    "01" + //运行模式
                    "02ad" + //车速
                    "00013092" + //累计里程
                    "0c34" + //总电压
                    "2710" + //总电流
                    "39" + //SOC
                    "01" + //DC-DC状态
                    "2e" + //档位
                    "2710" + //绝缘电阻
                    "1600" + //预留
                "02" + //驱动电机
                    "01010158628c4eb3580c262710" +
                "05" + //位置数据
                    "00" + //定位状态
                    "06f9530f" + //经度
                    "0220369e" + //纬度
                "06" + //极致数据
                    "01010e8801490e74010347010146" +
                "07" + // 报警数据
                    "000000000000000000" +
                "08" + //电池数据
                    "01010c34271000540001540e880e880e880e880e880e880e880e880e880e880e880e88" +
                    "0e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e88" +
                    "0e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e88" +
                    "0e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e880e88" +
                    "0e880e880e880e880e880e880e740e880e880e880e880e880e880e880e880e880e880e88" +
                    "090101000e4646474647464646474646464646" +
                "a0" + //扩展数据
                    "0063" + //长度
                    "0002" + //版本号
                    "01" + //车辆状态
                    "0014" + //长度
                        "02" + //电源档位
                        "1d" + //租赁模式
                        "00" + //车门状态
                        "00" + //车窗状态
                        "fe" + //中控锁状态
                        "00" + //车灯状态
                        "01" + //手刹状态
                        "8b" + //蓄电池电压
                        "00" + //充电枪状态
                        "01" + //定位是否有效
                        "00001def" + //远程gps里程
                        "0043" + //gps速度
                        "000a" + //gps方向角
                        "0c" + //定位星数
                        "1b" + //通讯信号强度
                    "0200470705c090538991dc910a5405c151b102e13cbe0a8f05c2606027104f4e042905c3000" +
                    "000003c03014905c403da1ac800001e7505c5004001540e37350c05c60748402200000000" +
                "3e" //尾部校验吗
        ); //can透传
        return sb.toString();
    }

    public static void main(String[] args) {

//        14080c0e361e
//        2020-08-12 14:54:30

//           System.out.println(ByteArrayUtil.hexStringToBytes("14080c0e361e"));
//
//        String str = build();
//        byte[] bytes = ByteArrayUtil.hexStringToBytes(str);
       // ProtocolUtil.parseRealTimeReq(bytes);


//
        String string = buildLogin();
        byte[] byteLogin = ByteArrayUtil.hexStringToBytes(string);
        ProtocolUtil.parseLoginReq(byteLogin);
    }


    /**
     * 字符串转化成为16进制字符串
     * @param s
     * @return
     */
    public static String strTo16(String s) {
        String str = "";
        for (int i = 0; i < s.length(); i++) {
            int ch = (int) s.charAt(i);
            String s4 = Integer.toHexString(ch);
            str = str + s4;
        }
        return str;
    }

    public static String buildLogin(){
        DateTimeTag tag = new DateTimeTag();
        String vin ="LNBSCB3F1JW186841";
        String iccid="898602B4071730066581";
        String  date=ByteArrayUtil.toHexString(tag.toBytes()) ;//采集时间
        String login = "232301fe%s01001e%s0003%s0000e3";
        String s = String.format(login, strTo16(vin),date,strTo16(iccid));
        System.out.println(s);
        return s;

    }

}
